
从1988年的最初设计到2003年、2011年、2014年和2017年的各种标准化里程碑，C++模板在不断地发展。可以说，模板在某种程度上与1998年最初的标准之后增加的主要语言有关。

第一版列出了在第一个标准之后会看到的一些扩展，其中一些已经成为现实:

\begin{itemize}
\item 
尖括号的修改:C++11去掉了在两个尖括号之间插入空格的需要。

\item 
默认函数模板参数:C++11允许函数模板有默认模板参数。

\item 
typdef模板:C++11引入了类似的别名模板。

\item 
偏特化的模板参数列表不应与主模板的参数列表相同(忽略重命名)

\item 
typeof操作符:C++11引入了decltype操作符，其功能相同(因为不能完全满足C++开发者社区的需求，所以使用了不同的标记，避免与现有的扩展冲突)。

\item 
静态属性:第一版预期编译器将直接支持类型特征的选择。这已经实现了，尽管接口是使用标准库来表示(使用编译器扩展来实现多个特性)。

\item 
自定义实例化诊断:新的关键字static\_assert实现了第一版中的std::instantiation\_error。

\item 
参数列表:C++11中的参数包。

\item 
布局控制:C++11的alignof和alignas满足了第一版中描述的需求。此外，C++17添加了std::variant模板支持联合结构。

\item 
初始化式推导:C++17增加了类模板参数推导，解决了同样的问题。

\item 
函数表达式:C++11的Lambda表达式提供了这种功能(其语法与第一版中讨论的有所不同)。
\end{itemize}

第一版中提出的其他方向还没有进入现代C++，但大多数仍在进行讨论，我们将它们的呈现在本书中。与此同时，也有其他想法的出现，这里会展示其中的一些。



